package lzupdater.locale;

import lzupdater.utils.Validate;

//LZRosterUpdater, a java client to update LZRoster
//Copyright (C) 2008 Fraskor from Krasus (e-mail: fraskor@gmail.com)
//
//This file is part of LZRosterUpdater.
//
//LZRosterUpdater is free software: you can redistribute it and/or modify
//it under the terms of the GNU General Public License as published by
//the Free Software Foundation, either version 3 of the License, or
//(at your option) any later version.
//
//This program is distributed in the hope that it will be useful,
//but WITHOUT ANY WARRANTY; without even the implied warranty of
//MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
//GNU General Public License for more details.
//
//You should have received a copy of the GNU General Public License
//along with this program.  If not, see <http://www.gnu.org/licenses/>.

/**
 * 
 * @author Fraskor
 */
public class Locale {

	private final String language;
	private final String country;

	public Locale(String locale) {
		this(locale.substring(0, 2), locale.substring(2, 4));
	}

	public Locale(String language, String country) {
		Validate.notNull(language);
		Validate.notNull(country);
		this.language = language.toLowerCase();
		this.country = country.toUpperCase();
	}

	@Override
	public int hashCode() {
		return language.hashCode() + country.hashCode();
	}

	@Override
	public String toString() {
		return language + country;
	}

	@Override
	public boolean equals(Object arg0) {
		if (arg0 instanceof Locale) {
			Locale locale = (Locale) arg0;
			return locale.country.equals(country)
					&& locale.language.equals(language);
		}
		return false;
	}

	public static Locale getUserLocale() {
		String lang = System.getProperty("user.language");
		String country = System.getProperty("user.country");

		if (lang == null || country == null) {
			lang = "en";
			country = "US";
		}

		return new Locale(lang, country);
	}

	public String getLanguage() {
		return language;
	}

	public String getCountry() {
		return country;
	}

}
